﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.Services;
using System.Web.Script.Services;
using BusinnesLayer.LogicBusiness;
using EntitiesLayer.Entities;

namespace ClinicaSanPablo
{
    public partial class MostrarGrillaQuejaReclamo : System.Web.UI.Page
    {
        private static System.Web.Script.Serialization.JavaScriptSerializer jsonSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
        private QuejaReclamobl pBl = new QuejaReclamobl();

        protected void Page_Load(object sender, EventArgs e)
        {
            int page = Convert.ToInt32(Request.QueryString["page"]);
            int limit = Convert.ToInt32(Request.QueryString["rows"]);
            string sidx = Request.QueryString["sidx"].ToString();
            string sord = Request.QueryString["sord"].ToString();

            string CodReclamo = Request.QueryString["CodReclamo"] ?? "";
            string DescripReclamo = Request.QueryString["DescripReclamo"] ?? "";
            string CodArea = Request.QueryString["CodArea"] ?? "";

            string datos = MostrarQuejaReclamos(sidx, sord, page, limit, CodReclamo, DescripReclamo, CodArea);
            Response.ContentType = "application/json";
            Response.Write(datos);
            Response.End();
        }

        [WebMethod]
        [ScriptMethod(ResponseFormat = ResponseFormat.Json)]
        public string ConsultarQyR(string CodReclamo)
        {             
            string datos = MostrarQuejaReclamos("", "", 0, 0, CodReclamo, "", "");
            return jsonSerializer.Serialize(datos);
        }



        public string MostrarQuejaReclamos(string sidx, string sord, int page, int rows, string CodReclamo, string DescripReclamo, string CodArea)        
         {
             if (CodReclamo != "" || DescripReclamo != "" || CodArea != "")
             {
                 List<QuejaReclamo> lista = pBl.BucarQuejaReclamo(CodReclamo, DescripReclamo, CodArea);
                 List<object> lstFilasAfilas = new List<object>();

                 if (lista.Count > 0)
                 {
                     foreach (var reclamo in lista)
                     {
                         var filaAfila = new
                         {
                             cell = new string[]
                        {
                            reclamo.VREC_COD_REC,
                            reclamo.VREC_DESC_REC,                           
                            Convert.ToString(reclamo.DREC_FECHA_REGISTRO.ToShortDateString()),
                            reclamo.Nombre_Paciente,
                            reclamo.IPAC_NRO_DOCUMENTO,
                            reclamo.VPAC_HHCC,
                            reclamo.Dirigido_A,

                            reclamo.VSED_COD_SEDE, 
                            reclamo.VARE_COD_AREA, 
                            reclamo.VSER_COD_SERV,
                            reclamo.VPRE_COD_PRE,
                            reclamo.VNEG_COD_UNI_NEG,
                            reclamo.VREC_APE_NOM_COLAB_INV ,
                            reclamo.VREC_APE_NOM_RECIB_POR,
                            reclamo.VREC_NRO_LIBRO_RECL,
                            reclamo.VQUE_COD_TIP_QUE,
                            reclamo.IREC_PLAZO_CANTIDAD.ToString(),
                            reclamo.VREC_PLAZO_UNIDAD,
                            reclamo.VREC_REQ_PAC,
                            reclamo.VREC_INF_ADIC ,
                            Convert.ToString(reclamo.VREC_FECHA_EVENTO.ToShortDateString()),
                            reclamo.Vpac_Apellidos,
                            reclamo.Vpac_Nombres,
                            reclamo.Vpac_Direccion,
                            reclamo.Ipac_Edad.ToString(),
                            reclamo.Vpac_Email,
                            reclamo.Vdoc_Cod_Tip_Doc,
                            reclamo.Ipac_Nro_Documento.ToString(),
                            reclamo.Vpac_Celular,
                            reclamo.Vpac_Telef_Fijo,
                            reclamo.Vpac_Cod_Tipo_Paciente,
                            reclamo.Vseg_Cod_Cia_Seg,
                            reclamo.Vpac_Centro_Trabajo,
                            reclamo.Vpac_Sexo,
                            reclamo.Vtips_Cod_Tipo_Seguro,
                            reclamo.Vpac_Cod_Iafa, 
                            reclamo.Ipac_Nro_Hab_Hosp.ToString(),
                            reclamo.Vrec_Nombres_Recl,
                            reclamo.Vrec_Apellidos_Recl,
                            reclamo.Vdoc_Cod_Tip_Doc,
                            reclamo.Irec_Nro_Documento.ToString(),
                            reclamo.Vrec_Celular,
                            reclamo.Vrec_Telef_Fijo,
                            reclamo.Vrec_Email,
                            reclamo.Vpac_Cod_Rel_Pac,
                            reclamo.Vrec_Pacienteoreprlegal,
                            reclamo.VREC_USUARIO_CREACION,
                            Convert.ToString(reclamo.DREC_FECHA_VENCIMIENTO.ToShortDateString()),
                           //Convert.ToString(reclamo.DREC_FECHA_CREACION.ToShortDateString())                                                        
                           //DPAC_NACIMIENTO
                           reclamo.DPAC_NACIMIENTO.ToShortDateString(),
                        }
                         };
                         lstFilasAfilas.Add(filaAfila);
                     }

                     int totalPag = (int)Math.Ceiling((decimal)rows / (decimal)lista.Count);
                     var data = new
                     {
                         total = totalPag,
                         // Total de páginas
                         page = page,
                         // Página actual
                         records = lista.Count,
                         // Total de registros (obtenido del modelo)
                         rows = lstFilasAfilas
                     };
                     return jsonSerializer.Serialize(data);
                 }
                 else
                 {
                     var data = new
                     {
                         total = 0,
                         // Total de páginas
                         page = 1,
                         // Página actual
                         records = 0,
                         // Total de registros (obtenido del modelo)
                         rows = ""
                     };
                     return jsonSerializer.Serialize(data);
                 }
             }
             else {
                 var data = new
                 {
                     total = 0,                    
                     page = 1,                   
                     records = 0,                 
                     rows = ""
                 };
                 return jsonSerializer.Serialize(data);
             }
       }

        /*************************************************************************************/
    
    
    }
}